Bienvenidos al examen final de GBI6 - Bioinformática.

CONTENIDO DE LA EVALUACIÓN

Los contenidos de esta evaluación corresponden a los temas de R revisados en el curso:

  • Tipos de datos

  • Instalación y uso de librerías.

  • Estructuras de control

  • Funciones

  • Manipulación de datos

  • Estadística básica

  • Visualización de datos

INDICACIONES GENERALES

Esta permitido consultar todo material disponible: diapositivas, google…Sin embargo NO esta permitido consultar a sus colegas.

Ustedes estan utilizando el R Markdown. Las instruciones son:

  • Creen una carpeta en su computador con el nombre “GBI6_ExamenFinal” donde guarden este cuaderno .Rmd.

  • Cree un subdirectorio de nombre “data” donde guarde la data que van a utilizar.

  • Cree un subdirectorio de nombre “results” donde guarde la tablas y figuras generadas del análisis.

  • Definan a esa carpeta como su directorio de trabajo.

  • Arriba, solamente donde dice “author”, deben llenar sus nombres.

  • Los codigos deben ser escritos dentro de las cajas que inician y terminan con ``` o dentro de las cajas indicadas abajo de las preguntas.

  • Al final del examen deben utilizar el comando “Knit” para generar un archivo .html

  • Es recomendable crear una copia de este script guía.

  • Genere controles de la versión para cada una de las preguntas con la leyenda “Nombre Apellido, resuelve el ejercicio XX”.

  • Copie y peque la dirección de su repositorio de GitHub en la actividad “ExamenFinal”.

  • Asegúrese de responder explícitamente cada una de las preguntas.

Para comprender la data de esta evaluación se requiere conocer el significado de algunos acrónimos de los tipos de cancer como indica el Broad Institute Cancer Names. Asimismo revise la información de ayuda para expresionsTCGA. La data contiene las columnas:

  • bcr_patient_barcode: es el identificador del paciente.

  • dataset: es el identificador del tipo de cancer del paciente.

  • resto de columnas: nivees de expresión de los diferentes mRNA de los genes que están como nombre de columna (para este análisis se han seleccionado solamente 7 de ellos).

PREGUNTAS

Pregunta 1: MANIPULACIÓN DE DATOS [4 PUNTOS]

[0.5 PUNTOS] 1.1 Defina su directorio de trabajo.

#getwd -> Irmprime el directorio actual
#setwd -> Define el directorio
def_dir <- setwd(getwd())

print(def_dir)
## [1] "/home/camy/Documentos/Bioinformatica/Examen-Final-Freire-Camila"

[0.5 PUNTOS] 1.2. Cargue la data “mRNA_expr.csv”

#Lectura del achivo donde esta la base de datos:
df <- read.csv("data/mRNA_expr.csv")

#Se imprime las 10 primeras filas de la base de datos
head(df, n=10)
##    bcr_patient_barcode dataset     GATA3       PTEN      XBP1       ESR1
## 1                BRCA1    BRCA  2.870500  1.3613571  2.983333  3.0842500
## 2                BRCA2    BRCA  2.166250  0.4283571  2.550833  2.3860000
## 3                BRCA3    BRCA  1.323500  1.3056429  3.020417  0.7912500
## 4                BRCA4    BRCA  1.841625  0.8096429  3.131333  2.4954167
## 5                BRCA5    BRCA -6.025250  0.2508571 -1.451750 -4.8606667
## 6                BRCA6    BRCA  1.804500  1.3107857  4.041083  2.7970000
## 7                BRCA7    BRCA -4.879250 -0.2369286 -0.724750 -4.4860833
## 8                BRCA8    BRCA -3.143250 -1.2432143 -1.193083 -1.6274167
## 9                BRCA9    BRCA  2.034000  1.2074286  2.278833  4.1155833
## 10              BRCA10    BRCA -0.293125  0.2883571 -1.605083  0.4731667
##         MUC1        FN1       GAPDH
## 1   1.652125  1.7333750 -1.62916667
## 2   3.080250  0.2176250 -0.95116667
## 3   2.985250  2.5080833 -1.29883333
## 4  -1.918500 -0.2197083 -0.82066667
## 5  -1.171500 -0.4773750  1.29458333
## 6   3.529750  1.2454583 -0.05216667
## 7  -1.455750 -1.9699583 -0.77700000
## 8  -0.986750 -0.4585417  1.08450000
## 9   0.668000  0.7657083 -2.01008333
## 10  0.011500 -0.2601250 -0.24291667

[1 PUNTO] 1.3 Cree una función de nombre long_df para transformar la data df de la forma wide a long.

# Escriba aquí la función long_df

## Se emplea la pivot_longer, del paquete tidyr, por lo que primero se carga el
# paquete

library(tidyr)

# data = el data frame con el que se va a trabajar, en este caso df
# se selecciona las columnas a trabajar, en este caso desde la 3 a 9
# names_to = El nuevo nombre de las columnas
# values_to = El nuevo nombre de las columnas para los valores

long_df <- function(dataframe){
  funcion_long <- pivot_longer(df, 3:9, names_to = "gen", 
                          values_to = "expresion_level")
  return(funcion_long)}

[1 PUNTO] 1.5 Genere la data df_long utilizandola función long_df.

La tabla resultante tendrá tres columnas: dataset, gen, expresion_level.

# Genere la data df_long 

df_long <- long_df(df)[,2:4] # long_df(df)[,2:4], tomara los valores de: 
                             # dataset, gen, expresion_level

# Se imprime las primeras 10 filas del nuevo data frame - 3 columnas
head(df_long, n=10)
## # A tibble: 10 × 3
##    dataset gen   expresion_level
##    <fct>   <chr>           <dbl>
##  1 BRCA    GATA3           2.87 
##  2 BRCA    PTEN            1.36 
##  3 BRCA    XBP1            2.98 
##  4 BRCA    ESR1            3.08 
##  5 BRCA    MUC1            1.65 
##  6 BRCA    FN1             1.73 
##  7 BRCA    GAPDH          -1.63 
##  8 BRCA    GATA3           2.17 
##  9 BRCA    PTEN            0.428
## 10 BRCA    XBP1            2.55

[0.5 PUNTOS] 1.5 A partir de la data df_long, genere un Descriptive table (librería sjPlot) y guárdelo en el subdirectorio “result” con el nombre mRNA_expr_summary.doc (previamente debe seleccionar las celdas adecuadas con funciones de la librería dplyr en conjunto con el operador %>%).

# Escriba el código para crear el Descriptive table 

#Librerias ocupadas para crear el Descriptive table

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(sjPlot)
library(sjmisc)
## Learn more about sjmisc with 'browseVignettes("sjmisc")'.
## 
## Attaching package: 'sjmisc'
## The following object is masked from 'package:tidyr':
## 
##     replace_na
library(sjlabelled)
## 
## Attaching package: 'sjlabelled'
## The following object is masked from 'package:dplyr':
## 
##     as_label
# Se selecciona las celdas con las que se va  a trabajar, %>% es similar a +

df_descriptive <- df_long %>% group_by(dataset, gen)

# A continuacion, para la descriptive table se emplea la función descr - 
# que permite hacer una tabla descriptiva sencilla

descr(
  df_descriptive,
  max.length = NULL,
  weights = NULL,
  show = "all", # Character vector, indicating which information (columns) 
                # that describe the data should be returned.
  out = "browser",
  encoding = "UTF-8",
  file ="results/mRNA_expr_summary.doc") # Para guardar la tabla en cualquier 
Basic descriptives
grouped by BRCA, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 2.30 2.62 0.11 3.06 2.63 10.97 (-4.86-6.11) 3.17 -1.03

 

Basic descriptives
grouped by BRCA, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 -0.06 1.29 0.05 0.10 0.02 7.03 (-3.8-3.23) 1.79 -0.53

 

Basic descriptives
grouped by BRCA, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 -1.13 0.67 0.03 -1.20 -1.16 4.58 (-3.12-1.46) 0.82 0.55

 

Basic descriptives
grouped by BRCA, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 1.10 1.80 0.07 1.68 1.37 9.96 (-6.03-3.93) 2.02 -1.31

 

Basic descriptives
grouped by BRCA, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 1.85 1.50 0.06 2.25 2.03 7.07 (-2.79-4.28) 2.01 -0.95

 

Basic descriptives
grouped by BRCA, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 0.75 0.69 0.03 0.81 0.79 5.2 (-2.4-2.8) 0.75 -0.86

 

Basic descriptives
grouped by BRCA, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 590 0 1.75 1.51 0.06 2.12 1.91 7.17 (-2.44-4.74) 1.75 -0.88

 

Basic descriptives
grouped by KIPAN, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -2.41 0.73 0.08 -2.28 -2.35 3.48 (-4.55–1.07) 0.83 -0.77

 

Basic descriptives
grouped by KIPAN, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -1.77 0.92 0.10 -1.79 -1.81 4.52 (-3.51-1.01) 1.05 0.47

 

Basic descriptives
grouped by KIPAN, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -0.70 0.71 0.08 -0.60 -0.66 3.42 (-2.78-0.64) 0.95 -0.53

 

Basic descriptives
grouped by KIPAN, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -3.85 0.87 0.09 -4.03 -3.93 5.06 (-5.53–0.46) 0.83 1.21

 

Basic descriptives
grouped by KIPAN, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -0.08 1.13 0.12 -0.17 -0.11 5.04 (-2.22-2.82) 1.86 0.21

 

Basic descriptives
grouped by KIPAN, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 0.72 0.55 0.06 0.81 0.75 2.65 (-0.57-2.09) 0.74 -0.54

 

Basic descriptives
grouped by KIPAN, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 88 0 -1.18 0.80 0.08 -1.07 -1.13 3.7 (-3.32-0.39) 1.04 -0.58

 

Basic descriptives
grouped by KIRP, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -2.37 0.93 0.23 -2.11 -2.30 3.33 (-4.55–1.23) 0.68 -1.23

 

Basic descriptives
grouped by KIRP, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -2.41 0.89 0.22 -2.63 -2.51 3.7 (-3.51-0.19) 0.69 1.80

 

Basic descriptives
grouped by KIRP, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -1.29 0.71 0.18 -1.17 -1.26 2.48 (-2.78–0.3) 0.87 -0.59

 

Basic descriptives
grouped by KIRP, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -3.71 1 0.25 -4.02 -3.90 3.91 (-4.37–0.46) 0.47 2.71

 

Basic descriptives
grouped by KIRP, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -0.33 1.10 0.28 -0.45 -0.36 4.21 (-2.22-2) 1.35 0.17

 

Basic descriptives
grouped by KIRP, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 0.73 0.51 0.13 0.75 0.77 1.76 (-0.39-1.37) 0.49 -0.99

 

Basic descriptives
grouped by KIRP, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 16 0 -2.20 0.87 0.22 -2.32 -2.30 3.7 (-3.32-0.39) 0.96 1.76

 

Basic descriptives
grouped by LUSC, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -2.99 1.05 0.08 -3.06 -3.07 5.62 (-5.2-0.42) 1.04 0.79

 

Basic descriptives
grouped by LUSC, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -0.98 1.07 0.09 -1.04 -1 5.2 (-3.45-1.75) 1.42 0.17

 

Basic descriptives
grouped by LUSC, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -0.54 0.68 0.05 -0.58 -0.56 4.61 (-2.61-2) 0.84 0.34

 

Basic descriptives
grouped by LUSC, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -3.76 0.91 0.07 -3.93 -3.87 6.26 (-5.06-1.2) 1.03 1.84

 

Basic descriptives
grouped by LUSC, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 0.56 1.15 0.09 0.65 0.57 5.05 (-1.81-3.24) 1.82 -0.04

 

Basic descriptives
grouped by LUSC, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 0.25 0.66 0.05 0.30 0.29 3.41 (-1.94-1.47) 0.88 -0.68

 

Basic descriptives
grouped by LUSC, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 154 0 -0.29 0.82 0.07 -0.42 -0.33 4.49 (-2.29-2.19) 0.98 0.50

 

Basic descriptives
grouped by OV, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 1.49 1.20 0.05 1.62 1.62 9.37 (-5.03-4.33) 1.21 -1.79

 

Basic descriptives
grouped by OV, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -1.44 1.33 0.06 -1.64 -1.52 6.56 (-4.06-2.49) 2.02 0.48

 

Basic descriptives
grouped by OV, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -0.99 0.62 0.03 -1.02 -1 4.17 (-2.7-1.48) 0.76 0.16

 

Basic descriptives
grouped by OV, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -4.23 0.73 0.03 -4.25 -4.24 7.36 (-5.96-1.4) 0.88 1.04

 

Basic descriptives
grouped by OV, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 2.27 1.03 0.04 2.47 2.36 7.89 (-3.32-4.56) 1.13 -1.14

 

Basic descriptives
grouped by OV, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 0.57 0.77 0.03 0.65 0.63 5.48 (-2.75-2.73) 0.97 -0.86

 

Basic descriptives
grouped by OV, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 561 0 -0.87 0.92 0.04 -0.83 -0.88 5.1 (-3.19-1.91) 1.32 0.09

 

Basic descriptives
grouped by UCEC, ESR1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 2.17 1.93 0.26 2.77 2.41 7.86 (-3.12-4.74) 2.24 -1.17

 

Basic descriptives
grouped by UCEC, FN1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -2.14 0.95 0.13 -2.27 -2.23 4.41 (-3.52-0.89) 1.20 1.07

 

Basic descriptives
grouped by UCEC, GAPDH
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -0.60 0.43 0.06 -0.66 -0.61 1.85 (-1.57-0.28) 0.65 0.11

 

Basic descriptives
grouped by UCEC, GATA3
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -4.12 1.03 0.14 -4.20 -4.26 5.98 (-5.54-0.44) 0.86 2.10

 

Basic descriptives
grouped by UCEC, MUC1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 1.91 1.16 0.16 1.94 1.98 5.32 (-1.06-4.26) 1.30 -0.47

 

Basic descriptives
grouped by UCEC, PTEN
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 0.08 0.91 0.12 0.24 0.11 4.12 (-2.34-1.78) 1.36 -0.40

 

Basic descriptives
grouped by UCEC, XBP1
var type label n NA.prc mean sd se md trimmed range iqr skew
expresion_level numeric expresion_level 54 0 -0.33 1.07 0.14 -0.20 -0.29 4.45 (-2.85-1.6) 1.42 -0.43
                                         # formato, en este caso .doc

[0.5 PUNTOS] 1.6 Interprete los resultados de la tabla resultante de la sección 1.5.


Como se puede observar el documento precargado anteriormente, se generaron las tablas descriptivas para cada gen, deacuerdo al tipo de cancer. En cuanto al carcinoma invasivo de mama (BRCA), se puede visualizar que en el mismo, el gen que se expresa mayormente es GATA3. Por otra parte, en el cancer Cohorte pan-riñón (KICH+KIRC+KIRP), tambien conocido por sus siglas (KIPAN), este presenta un mayor nivel de expresión para el gen PTEN, demostrando una media de 0.72. Igualmente, en el caso del cancer KIRP (Carcinoma renal de células papilares renales), en este usualmente, se expresa con mayor frecuencia el mismo gen ya mencionado. 

Por otra parte, para el gen LUSC (Carcinoma de células escamosas de pulmón), este posee un nivel de expresión mayor, cuando se habla del gen MUC1, ya que el mismo presenta una media de 0.56. Mismo caso ocurren en el cancer (OV), donde su media es de 2.27. 

Finalmente, para el cancer UCEC (Carcinoma de endometrio del cuerpo uterino), el gen que se expresa con mayor frecuencia es ESR1

Pregunta 2 VISUALIZACION DE DATOS [5 PUNTOS]

Para esta pregunta tiene que utilizar la data df_long.

[1 PUNTO] 2.1 Cree la funcion tcga_boxplots para visualizar boxplots y jitterplots. El único parámetro de la función es dataset. La función debe crear un boxplot de los niveles de expresión para cada gen.

# Escriba el código para crear la función tcga_boxplots

# Para este ejercicio se emplea la siguiente librería
library(ggplot2)
## 
## Attaching package: 'ggplot2'
## The following object is masked from 'package:sjlabelled':
## 
##     as_label
#Se crea la funcion de resolucion
tcga_boxplots <- function(data){
  gen_box <- df_long %>% filter (dataset == data) %>% #filtrado de la data
              ggplot(aes(x = gen, y = expresion_level, color = gen)) +  #Grafica de los puntos
              geom_boxplot( color='black') + geom_jitter(color='coral2')#Boxplot y jitters
}

[0.5 PUNTOS] 2.2 Utilizando la función lapply() genera la lista cancertype_boxplots con las gráficas para cada tipo de cancer (cada tipo de dataset).

# Escriba el código para generar la lista. 

# Para tomar cada dato del dataset previamente se debe hacer elementos únicos
# del data.frame
unicos1 <- unique(df_long$dataset)

# Lista de unicos

print("Los tipos de cancer son:")
## [1] "Los tipos de cancer son:"
unicos1
## [1] BRCA  OV    LUSC  KIPAN KIRP  UCEC 
## Levels: BRCA KIPAN KIRP LUSC OV UCEC
# Una vez se genera la lista de unicos se hace un lapply llamando a la funcion
# anterior, conla que se espera graficar los boxplots

cancertype_boxplots <- lapply(unicos1, tcga_boxplots)

cancertype_boxplots
## [[1]]

## 
## [[2]]

## 
## [[3]]

## 
## [[4]]

## 
## [[5]]

## 
## [[6]]

cancertype_boxplots[[3]]

[0.5 PUNTOS] 2.3 Guarde en el subdirectorio result el tercer plot de la lista cancertype_boxplots con el nombre boxplot3.png. La definición de a figura debe ser de 300dpi.

# Escriba el código para guardar la tercera figura de la lista. 

ggsave("results/boxplot3.png", # Nombre del archivo a guardar
        plot = cancertype_boxplots[[3]], # Selecciona la gráfica
        device = NULL,
        path = NULL,
        scale = 1, # Se selecciona la escala
        width = NA, # Ancho
        height = NA, # Largo
        dpi = 300, # Se selecciona la definicion de la figura
        limitsize = TRUE, # Limites 
        bg = NULL)
## Saving 7 x 5 in image

[1 PUNTO] 2.4 Escriba la función reg_gen_expression, con el parámetro gen. En este caso la función visualizará una gráfica de nube de puntos (geom_point) y una regresión por tipo de “dataset”. La gráfica será de comparación de gen1 con gen2; por ejemplo en el eje “x” GATA3 y en el eje “y”” FN1.

# Escriba aquí su función reg_gen_expression

#El resultado previo se lo inicializa, para hacer genes únicos 
# de un tipo de cancer
genes_cancer <- cancertype_boxplots[[3]]

#Función reg_gen_expression
reg_gen_expression <- function(genes_cancer){
  # Se selecciona los dos genes a comparar
  comparacion_gen_1 = genes_cancer[1]
  comparacion_gen_2 = genes_cancer[2]
  # Se filtran, nuevamente, los datos del data.frame
  # para obtener genes y compararlos despues
  # Se filtra la data convertida con ayuda de %>%
  filtro_comparacion_gen_1 <- df_long %>% filter (gen == comparacion_gen_1)
  filtro_comparacion_gen_2 <- df_long %>% filter (gen == comparacion_gen_2)
  
  #Se guarda el filtro en un data.frame para graficarlos
  filtro_comparacion_gen_Total <- cbind(filtro_comparacion_gen_1,
                                        filtro_comparacion_gen_2)
  
  #Tible modifica las datas y mejora el grafico
  filtro_comparacion_gen_Total_tibble <- tibble(
    "dataset" = filtro_comparacion_gen_Total[,1], 
    "gen1" = filtro_comparacion_gen_Total[,3], 
    "gen2" = filtro_comparacion_gen_Total[,6])
  
  #Finalemente, se une todo y graficae grafica
  gen_box_reg <- filtro_comparacion_gen_Total_tibble %>% 
                ggplot(aes(x = gen1, y = gen2, color = dataset)) + 
                geom_point(size = 2) + 
                geom_smooth(method = lm, formula = y~x, se = FALSE)
  gen_box_reg
}

[0.5 PUNTOS] 2.5. Utilizando la función lapply() genera la lista reg_genplots con las gráficas para cada par de genes posibles. Recuerde que tiene 7 tipos de genes, se debe tener todas las combinaciones posibles por pares de genes (combinatoria sin repetición).

# Escriba el código para generar la lista. 


unicos2 <- unique(df_long$gen)

#Lista de genes
print("Los genes son:")
## [1] "Los genes son:"
unicos2
## [1] "GATA3" "PTEN"  "XBP1"  "ESR1"  "MUC1"  "FN1"   "GAPDH"
#Funcion combinacion sin repeticion

unicos2_combinacion <- combn(unicos2,m = 2,simplify = FALSE)

#Las combinaciones sin repetir
print (paste("El número de combinaciones sin repetir es: ", length(unicos2_combinacion)))
## [1] "El número de combinaciones sin repetir es:  21"
reg_genplots <- lapply(unicos2_combinacion,reg_gen_expression)

#Todos las regresiones
reg_genplots
## [[1]]

## 
## [[2]]

## 
## [[3]]

## 
## [[4]]

## 
## [[5]]

## 
## [[6]]

## 
## [[7]]

## 
## [[8]]

## 
## [[9]]

## 
## [[10]]

## 
## [[11]]

## 
## [[12]]

## 
## [[13]]

## 
## [[14]]

## 
## [[15]]

## 
## [[16]]

## 
## [[17]]

## 
## [[18]]

## 
## [[19]]

## 
## [[20]]

## 
## [[21]]

#Solo la regresión onceva
reg_genplots[[11]]

[0.5 PUNTOS] 2.6. Guarde en el subdirectorio result el onceavo plot de la lista reg_genplots con el nombre regresion11.pdf. La definición de a figura debe ser de 300dpi.

# Escriba el código para guardar el onceavo plot. 

ggsave("results/regresion11.pdf",
        plot = reg_genplots[[11]],
        device = NULL,
        path = NULL,
        scale = 1,
        width = NA,
        height = NA,
        dpi = 300,
        limitsize = TRUE,
        bg = NULL)
## Saving 7 x 5 in image

[1 PUNTO] 2.7. Interprete los resultados de las figuras boxplot3.png y regresion11.pdf.

**INTERPRETACION DE BOXPLOT 3:**

  Cada uno de estos boxplots muestran una línea gruesa central, la cual representa la media. Lo que pudo a su vez, tambien visualizarse en la tabla creada previamente. Como se verifica el gen que presenta mayor expresión es MUC1. Cuya caja de bigotes muestra asimetría positiva, ya que la línea de la media se encuenra cerca de la parte superior de la gráfica. Por otra parte cada punto que se encuentran sobre y alrededor de las cajas representan cada una de las observaciones. Por lo que, esto nos ayuda a comprender de mejor manera los datos dados.  

**INTERPRETACION DE LA GRÁFICA DE REGRECION 3:**
  
Como se observa en la gŕafica, el gen1, presenta expresiones similares en relación al gen dos. Además ambos se expresan en su mayoría en el cancer LUSC. 

3. CONTROL DE LA VERSIÓN [1 PUNTO]. Se verficará en ell repositorio de GitHub.